package org.example.ruoxing_admin_springboot3.httpResponseResult;
import lombok.Getter;
import lombok.Setter;
/**
 * @description 请求响应结果的通用类
 * @author 莫若省
 * @createTime 2024/4/17
*/
@Setter
@Getter
public class ResponseResult<T> {
    private int code;
    private T  data;
    private String msg;
    // 构造函数
    public ResponseResult(int code, T data, String message) {
        this.code = code;
        this.data = data;
        this.msg = message;
    }
    /**
     * @description 成功的响应结果
     * @author 莫若省
     * @createTime 2024/4/16
    */
   public static  <T> ResponseResult<T> SUCCESS(T data){
        return new ResponseResult<T>(ResponseResultEnum.SUCCESS.getCode(),data,ResponseResultEnum.SUCCESS.getMsg());
    }
    /**
     * @description 成功的响应结果无参数自定义的重载
     * @author 莫若省
     * @createTime 2024/4/23
    */
    public static  <T> ResponseResult<T> SUCCESS(){
         return new ResponseResult<T>(ResponseResultEnum.SUCCESS.getCode(),null,ResponseResultEnum.SUCCESS.getMsg());
    }
    /**
     * @description 成功的响应结果自定义的重载
     * @author 莫若省
     * @createTime 2024/4/16
     */
   public static  <T> ResponseResult<T> SUCCESS(T data, String message){
        return new ResponseResult<T>(ResponseResultEnum.SUCCESS.getCode(),data,message);
    }
    /**
     * @description 警告的响应结果
     * @author 莫若省
     * @createTime 2024/4/16
    */
   public   static  <T> ResponseResult<T> WARN(String message){
        return new ResponseResult<T>(ResponseResultEnum.WARN.getCode(), null,message);
    }
    /**
     * @description 警告的响应结果的自定义重载
     * @author 莫若省
     * @createTime 2024/4/16
    */
   public static  <T> ResponseResult<T> WARN(int code, String message){
        return new ResponseResult<T>(code,null,message);
    }
    /**
     * @description 警告用户权限异常的响应结果
     * @author 莫若省
     * @createTime 2024/4/16
    */
   public   static  <T> ResponseResult<T> WARN_AUTH(){
        return new ResponseResult<T>(ResponseResultEnum.NO_AUTHORITY.getCode(), null,ResponseResultEnum.NO_AUTHORITY.getMsg());
    }
    /**
     * @description 警告用户权限异常的响应结果的自定义重载
     * @author 莫若省
     * @createTime 2024/4/17
    */
   public static  <T> ResponseResult<T> WARN_AUTH(String message){
        return new ResponseResult<T>(ResponseResultEnum.NO_AUTHORITY.getCode(),null,message);
    }
    /**
     * @description 错误的响应结果
     * @author 莫若省
     * @createTime 2024/4/16
    */
    public static  <T> ResponseResult<T> ERROR(){
        return new ResponseResult<T>(ResponseResultEnum.ERROR.getCode(), null,ResponseResultEnum.ERROR.getMsg());
    }
    /**
     * @description 错误的响应结果的自定义重载
     * @author 莫若省
     * @createTime 2024/4/16
    */
   public static  <T> ResponseResult<T> ERROR(int code, String message) {
        return new ResponseResult<T>(code, null, message);
    }
    /**
     * @description 错误的响应结果的自定义重载
     * @author 莫若省
     * @createTime 2024/5/10
    */
    public static  <T> ResponseResult<T> ERROR(String message) {
        return new ResponseResult<T>(ResponseResultEnum.ERROR.getCode(), null, message);
    }
}
